home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / Command.h < prev    next >
C/C++ Source or Header  |  1992-04-27  |  2KB  |  93 lines

  1. #ifndef Command_First
  2. #ifdef __GNUG__
  3. //pragma once
  4. #pragma interface
  5. #endif
  6. #define Command_First
  7.  
  8. #include "Object.h"
  9. #include "Point.h"
  10.  
  11. typedef enum {
  12.     eTrackPress,
  13.     eTrackMove,
  14.     eTrackRelease,
  15.     eTrackIdle,
  16.     eTrackExit
  17. } TrackPhase;
  18.  
  19. typedef enum {
  20.     eCmdStateNew,
  21.     eCmdStateDone,
  22.     eCmdStateNotDone,
  23.     eCmdStateFinished
  24. } CommandState;
  25.  
  26. typedef enum {
  27.     eCmdTypeNormal,
  28.     eCmdTypeCantUndo,
  29.     eCmdTypeNoChange
  30. } CommandType;
  31.  
  32. typedef enum {
  33.     eCmdMoveEvents   = BIT(eObjLast+1),
  34.     eCmdIdleEvents   = BIT(eObjLast+2),
  35.     eCmdFullScreen   = BIT(eObjLast+3),
  36.     eCmdNoReplFeedback= BIT(eObjLast+4),
  37.     eCmdDefault      = 0,
  38.     eCmdLast         = eObjLast + 4
  39. } CommandFlags;
  40.  
  41. class Command: public Object {
  42.     int CmdNumber;
  43.     char *CmdName;
  44.     CommandState state;
  45.     CommandType type;
  46.  
  47. public:
  48.     MetaDef(Command);
  49.  
  50.     Command(int= 0, char *CmdName= 0, CommandType t= eCmdTypeNormal);
  51.     Command(char *CmdName, CommandType t= eCmdTypeNormal);
  52.  
  53.     void SetName(char *name)
  54.     { CmdName= name; }
  55.     char *GetName()
  56.     { return CmdName; }
  57.     char *GetUndoName();
  58.     void SetId(int cmd)
  59.     { CmdNumber= cmd; }
  60.     int GetId()
  61.     { return CmdNumber; }
  62.     void SetType(CommandType t)
  63.     { type= t; }
  64.     CommandType GetType()
  65.     { return type; }
  66.     
  67.     void Finish();
  68.     int Perform();
  69.     virtual void Done(Command *newCommand);
  70.  
  71. protected:
  72.     virtual void Commit();
  73.     virtual void UndoIt();
  74.     virtual void DoIt();
  75.     virtual void RedoIt();
  76.     void InspectorId(char *buf, int sz);
  77.  
  78. friend class Clipper;
  79.     virtual void TrackConstrain(Point anchorPoint, Point previousPoint, 
  80.                                 Point *nextPoint);
  81.     virtual void TrackFeedback(Point anchorPoint, Point previousPoint,
  82.         bool turnItOn);
  83.  
  84.     virtual Command *TrackMouse(TrackPhase aTrackPhase, Point anchorPoint,
  85.         Point previousPoint, Point nextPoint);
  86. };
  87.  
  88. extern Command *gNoChanges;
  89. extern Command *gResetUndo;
  90.  
  91. #endif
  92.  
  93.